The easy and reliable distribution, installation and maintenance of software programs for use in computer systems, has been a problem that has forever plagued the software industry. Historically, when computer systems were relatively large, isolated systems shared by a number of users and a new software program was distributed, a human technician would travel to the computer system and install the appropriate program(s) and/or components necessary for the local operation software program on the computer system. In the event that its producer updated the software program , then a technician would again have to travel to the computer system and apply the update. Of course, the proliferation of computer workstations and personal computers has driven this method of distribution, installation and maintenance into obsolescence.
In particular, and as technology has improved, it has become commonplace for the producers of software programs to distribute their products on high-capacity media such as diskettes, or compact discs (CD). Oftentimes the software programs comprise a collection of independent modules that provide different functionality or serve to tailor the software program to a particular environment. By combining these modules in a particular manner, a tailored software program is assembled on the end user computer system that is generally specific to that system and the end user's requirements.
Unfortunately, many end users of software programs lack either the technical ability or desire or both to substantially contribute to the installation of a complex software program. As a result, the producers of the software programs have provided their products with installation programs that automate the software installation process sufficiently to permit an end-user of the software program to perform his/her own installation.
In operation, such an installation program will typically guide the end user through the installation process by querying the end user for specific functionality/components required in the end user software program. Typically, this query is performed by presenting the end user with a list of available or proposed components from which the end user makes one or more selections. Based upon the selection(s), the installation program assembles an end user software program from one or more of the components or modules.
Of course, the actual installation program can be quite complex even though many of its features are hidden from the end user. For example, an installation program can install applications, user preferences, system extensions, control panels and much more. Among its many capabilities, an installation program may: check to see whether a target computer meets minimum system requirements to permit an installation to continue; search for files or folders on a target disk; delete or move older or conflicting files; install files or folders; display a license agreement before starting the installation; display a "readme.txt" file after the installation is complete; and create an un-install program on the end user's computer.
Additionally, the components or modules associated with an installation are frequently distributed as compressed or encrypted (or both) files. Oftentimes such compressed/encrypted components are combined together in a package, i.e., as a single "self-extracting" executable program. When such a self-extracting program is run, it unpackages all of the components and de-crypts and decompresses them as appropriate. FIG. 1 shows in simplified block diagram form, this generalized software distribution and installation.
The primary aim of such an install program is to make installation of the software program simple, easy and straightforward. Oftentimes, comprehensive context-sensitive help is made available to the end user by the installation program. Additionally, once the software program is installed, the end user will often use the installation program to modify or update the software program at a later date.
Even this type of automated installation process is too often subject to errors. As noted previously, end users are oftentimes either disinterested or incapable of providing necessary responses to the installation program sufficient to produce a correct software program. More insidious, are inadvertent media errors in the component or modules provided by the software producer that may preclude their assembly into an operating software program. Additionally, even if the end user and installation program successfully assemble the components into an operational program, it oftentimes is not optimal for the end user computer system because of peculiarities associated with that system. Finally, any difficulties associated with the initial installation are often repeated during a likely update to the software program thereby compounding the problem.
Still more recently, the above methods and systems for installation and upgrading of end user software programs have been enhanced through the use of local area and wide area networking technologies. Specifically, local copies of program modules are frequently placed on a server connected to an end user computer system via local area or wide area (i.e., world-wide-web) protocols. In this manner, the end user frequently has access to a most recent copy/update to the software program, thereby facilitating its maintenance. Despite these improvements however, many of the above stated problems associated with the distribution, installation and maintenance of software still exist.